<?php
class OcupanteBSN extends GenericBSN {

	function __construct() {
		$this->dao = new OcupanteDAO();		
	}

	public function consultar($vars) {
		$this->preencher($vars);
		$this->Records = $this->dao->consultar($this->where, $this->params, $this->order . $this->limit);
		$this->Result  = "OK";
	}
	
	public function consultarPK($vars) {
		$this->Records = $this->dao->consultarPK($vars['id']);
		$this->Result = "OK";
	}
	
	public function contarOcupantes($vars) {
		$this->Records = $this->dao->contarOcupantes($vars['l_id']);
		$this->Result  = "OK";
	}
	
	public function inserir($vars) {
		try {
			$vendLoteBSN 			= new Vend_LoteBSN();
			$valida['pedidolote'] 	= $vars['lote_codigo'];
			$valida['sepultamento'] = "S";
			
			$vendLoteBSN->consultarPedidoLote($valida);
			
			if (!isset($vendLoteBSN->Records[0])) {
				throw new Exception("Não há mais vagas nesse lote!");
			}
						
			$ocup = $this->dao->contarOcupantes($vars['lote_id']); 
			
			if ($ocup[0]['total'] > 0) {
				$contRecBSN 			= new Cont_RecBSN();
				
				// gerar taxa de sepultamento para dt_vcto
				$contRec['data']		= date('d/m/Y');
				$contRec['ad_id']		= $vendLoteBSN->Records[0]['ad_id'];
				$contRec['historico']	= ($ocup[0]['total'] + 1) . 'º sepultamento no lote ' . $vars['lote_codigo'];
				$contRec['vcto']		= $vars['vcto_taxa'];
				$contRec['vr_titulo']	= 223;
				$contRec['pd_id']		= $vendLoteBSN->Records[0]['id'];
				$contRec['parcela']		= ' ';
				$contRec['tipo']		= 'O';

				$contRecBSN->inserir($contRec, false);
			} 
			
			if ($ocup[0]['total'] < 1) {
				$mapaDAO				= new MapaDAO();
				$mapaDAO->incOcupados($vendLoteBSN->Records[0]['q_id'], 1, false);
			}
			
			$registro['lote']		= $vars['lote_id'];
			$registro['nome']		= $vars['nome'];
			$registro['idade']		= $vars['idade'];
			$registro['sexo']		= $vars['sexo'];
			$registro['cid_nat']	= $vars['cid_nat'];
			$registro['nome_pai']	= $vars['nome_pai'];
			$registro['nome_mae']	= $vars['nome_mae'];
			$registro['dt_sepult']	= $vars['dt_sepult'];
			$registro['n_obito']	= $vars['n_obito'];
			$registro['causa']		= $vars['causa'];
			$registro['est_civil']	= $vars['est_civil'];
			$registro['profissao']	= $vars['profissao'];
			$registro['local']		= $vars['local'];
			$registro['medico']		= $vars['medico'];
			$registro['dt_falecim']	= $vars['dt_falecim'];
			$registro['dt_nasc']	= $vars['dt_nasc'];
			$registro['obs']		= $vars['obs'];
				
			$this->Record = $this->dao->inserir($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar inserir: " . $e->getMessage();
		}
	}
	
	public function alterar($vars) {
		try {		
			$registro['id']			= $vars['id'];
			$registro['nome']		= $vars['nome'];
			$registro['idade']		= $vars['idade'];
			$registro['sexo']		= $vars['sexo'];
			$registro['cid_nat']	= $vars['cid_nat'];
			$registro['nome_pai']	= $vars['nome_pai'];
			$registro['nome_mae']	= $vars['nome_mae'];
			$registro['dt_sepult']	= $vars['dt_sepult'];
			$registro['n_obito']	= $vars['n_obito'];
			$registro['causa']		= $vars['causa'];
			$registro['est_civil']	= $vars['est_civil'];
			$registro['profissao']	= $vars['profissao'];
			$registro['local']		= $vars['local'];
			$registro['medico']		= $vars['medico'];
			$registro['dt_falecim']	= $vars['dt_falecim'];
			$registro['dt_nasc']	= $vars['dt_nasc'];
			$registro['obs']		= $vars['obs'];
			
			$this->Record = $this->dao->alterar($registro); 
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar alterar: " . $e->getMessage();
		}
	}
	
	public function excluir($vars) {
		$vendLoteBSN 	= new Vend_LoteBSN();
		
		try {
			$ocupante 	= $this->dao->consultarPK($vars['id']);
			$consulta['pedidolote'] = $ocupante[0]['lote_codigo'];
			$vendLoteBSN->consultarPedidoLote($consulta);
			$ocup 		= $this->dao->contarOcupantes($ocupante[0]['lote_id']); 
			
			if ($ocup[0]['total'] == 1) {
				$mapaDAO				= new MapaDAO();
				$mapaDAO->incOcupados($vendLoteBSN->Records[0]['q_id'], -1, false);
			}
			
			$res = $this->dao->excluir($vars['id']);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar excluir: " . $e->getMessage();
		}
	}
	
	public function enviarParaOssuario($vars) {
		try {
			$registro['id'] 	= $vars['id'];
			$registro['gaveta']	= $vars['gaveta'];
			$registro['lote']	= 9;   // lote do ossuário - configurações

			$this->Record  = $this->dao->alterar($registro); 
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar alterar: " . $e->getMessage();
		}
	}
	
	public function retirarDoOssuario($vars) {
		try {
			$vendLoteBSN 			= new Vend_LoteBSN();
			$valida['pedidolote'] 	= $vars['lote'];
			$valida['sepultamento'] = "S";
			
			$vendLoteBSN->consultarPedidoLote($valida);
			
			if (!isset($vendLoteBSN->Records[0])) {
				throw new Exception("O lote informado não existe ou não possui mais vagas!");
			}
			
			$registro['id'] 	= $vars['id'];
			$registro['gaveta']	= null;
			$registro['lote']	= $vendLoteBSN->Records[0]['lote'];
		
			$this->Record  = $this->dao->alterar($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar alterar: " . $e->getMessage();
		}
	}
	
	public function fazerExumacao($vars) {
		try {
			$exumDAO 			 = new ExumacaoDAO();
			$exum['ocupante'] 	 = $vars['id'];
			$exum['data'] 		 = $vars['data'];
			$exum['destino'] 	 = $vars['destino'];
			$exum['lote'] 		 = $vars['lote'];
			$exum['responsavel'] = $vars['responsavel'];
			$exumDAO->inserir($exum, false);
			
			$ocup['id'] = $vars['id'];
			$ocup['lote'] = null;
			$this->dao->alterar($ocup);
			
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar exumar: " . $e->getMessage();
		}
	}

	public function cancelarExumacao($vars) {
		try {
			$exumDAO 	= new ExumacaoDAO();
			$where		= "where ocupante_id = :ocupante";
			$params['ocupante'] = $vars['id'];
			$exum 		= $exumDAO->consultar($where, $params);
			if (isset($exum[0])) {
				$ocup['id'] = $vars['id'];
				$ocup['lote'] = $exum[0]['lote_id'];
				$this->dao->alterar($ocup, false);
			}
			$exumDAO->excluir($exum[0]['id']);
			
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar cancelar exumação: " . $e->getMessage();
		}
	}
	
	public function relatorio($vars) {
		try{
			$this->Records = $this->dao->consultarRelatorio($vars['tipo'], $vars['filtro'], $vars['campo_ordem'], $vars['ordem']);
			$this->Result = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar gerar relatório: " . $e->getMessage();
		}
	}

	public function relatorioExumacoes($vars) {
		try{
			$exumDAO 	= new ExumacaoDAO();
			$this->Records = $exumDAO->consultarRelatorio($vars['tipo'], $vars['filtro'], $vars['dt_ini'], $vars['dt_fim'], $vars['ordem']);
			$this->Result = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = "Erro ao tentar gerar relatório: " . $e->getMessage();
		}
	}
}
?>